package cn.iocoder.yudao.module.erp.controller.admin.report.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;

/**
 * 旧料兑换分析响应 VO
 */
@Schema(description = "管理后台 - 旧料兑换分析响应 VO")
@Data
public class ErpExchangeAnalysisRespVO {

    @Schema(description = "兑换总单数", requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer exchangeOrderCount;

    @Schema(description = "兑换客户数", requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer exchangeCustomerCount;

    @Schema(description = "旧料回收总重量(克)", requiredMode = Schema.RequiredMode.REQUIRED)
    private BigDecimal oldMaterialTotalWeight;

    @Schema(description = "旧料回收总金额(元)", requiredMode = Schema.RequiredMode.REQUIRED)
    private BigDecimal oldMaterialTotalAmount;

    @Schema(description = "兑换新品总重量(克)", requiredMode = Schema.RequiredMode.REQUIRED)
    private BigDecimal newProductTotalWeight;

    @Schema(description = "兑换新品总金额(元)", requiredMode = Schema.RequiredMode.REQUIRED)
    private BigDecimal newProductTotalAmount;

    @Schema(description = "客户补差价总金额(元)", requiredMode = Schema.RequiredMode.REQUIRED)
    private BigDecimal priceDifferenceTotalAmount;

    @Schema(description = "兑换增值率(%)", requiredMode = Schema.RequiredMode.REQUIRED)
    private BigDecimal valueAddedRate;

    @Schema(description = "各金属类型兑换明细", requiredMode = Schema.RequiredMode.REQUIRED)
    private List<MetalTypeExchangeDetailVO> metalTypeDetails;

    /**
     * 金属类型兑换明细 VO
     */
    @Schema(description = "金属类型兑换明细")
    @Data
    public static class MetalTypeExchangeDetailVO {

        @Schema(description = "贵金属类型", requiredMode = Schema.RequiredMode.REQUIRED)
        private Integer metalType;

        @Schema(description = "贵金属类型名称", requiredMode = Schema.RequiredMode.REQUIRED)
        private String metalTypeName;

        @Schema(description = "旧料回收重量(克)", requiredMode = Schema.RequiredMode.REQUIRED)
        private BigDecimal oldMaterialWeight;

        @Schema(description = "旧料回收金额(元)", requiredMode = Schema.RequiredMode.REQUIRED)
        private BigDecimal oldMaterialAmount;

        @Schema(description = "兑换新品重量(克)", requiredMode = Schema.RequiredMode.REQUIRED)
        private BigDecimal newProductWeight;

        @Schema(description = "兑换新品金额(元)", requiredMode = Schema.RequiredMode.REQUIRED)
        private BigDecimal newProductAmount;

        @Schema(description = "差价金额(元)", requiredMode = Schema.RequiredMode.REQUIRED)
        private BigDecimal priceDifference;

        @Schema(description = "兑换占比(%)", requiredMode = Schema.RequiredMode.REQUIRED)
        private BigDecimal exchangePercentage;
    }
} 